package com.tj.seed.common.jwt;

import com.tj.seed.common.context.UserContext;

/**
 * token生成
 */
public interface TokenGenerator {
    /**
     * 为系统间访问（如feign）提供的可传入自定义myIssuer（颁发人）的token生成方法
     * @param expiredMillis token过期时间(ms)
     * @param userContext 当前用户
     * @param myIssuer 颁发人
     * @return
     */
    String generate(long expiredMillis, UserContext userContext,String myIssuer);

    /**
     * 生成一个token
     * @return
     */
    String generateToken();

    /**
     * 生成一个token
     * @param expiredMillis token过期时间(ms)
     * @return
     */
    String generateToken(long expiredMillis);

    /**
     * 生成一个token
     * @param expiredMillis token过期时间(ms)
     * @param delayMillis token验证推迟时间(ms)
     * @return
     */
    String generateToken(long expiredMillis,long delayMillis);

    /**
     * 生成一个token
     * @param userContext 当前用户
     * @return
     */
    String generateToken(UserContext userContext);

    /**
     * 生成一个token
     * @param expiredMillis token过期时间(ms)
     * @param userContext 当前用户
     * @return
     */
    String generateToken(long expiredMillis,UserContext userContext);

    /**
     * 生成一个token
     * @param expiredMillis token过期时间(ms)
     * @param delayMillis token验证推迟时间(ms)
     * @param userContext 当前用户
     * @return
     */
    String generateToken(long expiredMillis,long delayMillis,UserContext userContext);
}
